﻿using ImGuiNET;
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text;
using TTEditor;

namespace FakeUnity.Editor
{
    class WindowHierarchy : IWindow
    {
        public WindowHierarchy()
        {
        }
        public void OnClose()
        {
        }


        //void OnGUI_SceneMenu(FakeUnity.Warp.SceneNative.SceneHandle handle, string selectkey, string name, bool active)
        //{
        //    if (ImGui.BeginPopupContextItem(selectkey))
        //    {
        //        ImGui.Text("==sceneitem==");
        //        if (ImGui.MenuItem("Change Name"))
        //        {
        //        }
        //        if (ImGui.MenuItem("Create SceneNode"))
        //        {
        //            var root = FakeUnity.Warp.SceneNative.Scene_GetRoot(handle);
        //            FakeUnity.Warp.SceneNative.SceneNode_Create(root, "nihao");
        //        }
        //        ImGui.EndPopup();
        //    }

        //}
        //void OnGUI_SceneNodeMenu(FakeUnity.Warp.SceneNative.TransformHandle handle, string selectkey)
        //{
        //    if (ImGui.BeginPopupContextItem(selectkey))
        //    {
        //        ImGui.Text("==scene node node item==");
        //        if (ImGui.MenuItem("Change Name"))
        //        {
        //        }
        //        if (ImGui.MenuItem("Create SceneNode"))
        //        {
        //            FakeUnity.Warp.SceneNative.SceneNode_Create(handle, "nihao sun");
        //        }
        //        ImGui.EndPopup();
        //    }

        //}
        //bool OnGUI_NodeTree(FakeUnity.Warp.SceneNative.TransformHandle handle, string selectppkey)
        //{
        //    bool hadselect = false;
        //    int count = FakeUnity.Warp.SceneNative.SceneNode_ChildCount(handle);

        //    for (var i = 0; i < count; i++)
        //    {
        //        var item = FakeUnity.Warp.SceneNative.SceneNode_FindChildByIndex(handle, i);
        //        string selectitemkey = selectppkey + "_" + i;

        //        ImGuiTreeNodeFlags select = selectitemkey == selectkey ? ImGuiTreeNodeFlags.Selected : ImGuiTreeNodeFlags.None;

        //        if (ImGui.TreeNodeEx("node:" + selectitemkey, select))
        //        {
        //            OnGUI_SceneNodeMenu(item, selectitemkey);
        //            hadselect = OnGUI_NodeTree(item, selectitemkey);
        //            ImGui.TreePop();
        //        }
        //        else
        //        {
        //            OnGUI_SceneNodeMenu(item, selectitemkey);
        //        }
        //        if (!hadselect && ImGui.IsItemClicked())//馬後炮真方便
        //        {
        //            selectkey = selectitemkey;
        //            hadselect = true;
        //        }

        //    }

        //    return hadselect;
        //}
        string selectkey = "";
        public void OnUpdate()
        {
        }
        public void OnGUI()
        {

            //if (ImGui.BeginPopupContextWindow("Scene Operate", ImGuiMouseButton.Right))
            //{
            //    ImGui.Text("==Hierarchy window==");
            //    if (ImGui.MenuItem("Create Scene"))
            //    {
            //        FakeUnity.Warp.SceneNative.Scene_Create("nihaoma.");
            //    }
            //    ImGui.EndPopup();
            //}

            if (ImGui.TreeNode("Scenes"))
            {

                //    for (var i = 0; i < FakeUnity.Warp.SceneNative.Scene_Count(); i++)
                //    {
                //        var sh = FakeUnity.Warp.SceneNative.Scene_FindByIndex(i);
                //        var name = FakeUnity.Warp.SceneNative.Scene_GetName(sh);
                //        var active = FakeUnity.Warp.SceneNative.Scene_GetActive(sh);
                //        var scenekey = "scene::" + i;

                //        ImGuiTreeNodeFlags select = scenekey == selectkey ? ImGuiTreeNodeFlags.Selected : ImGuiTreeNodeFlags.None;

                //        string namestr;
                //        unsafe
                //        {
                //            namestr = new string((char*)name);
                //        }

                //        bool hadselect = false;

                //        if (ImGui.TreeNodeEx(namestr + " |" + active + "_" + i,
                //            //ImGuiTreeNodeFlags.NoTreePushOnOpen |//不需要endpopup
                //            //ImGuiTreeNodeFlags.Leaf |
                //            select//選中
                //            )
                //            )
                //        {
                //            //如果節點處於展開狀態，在這裏顯示菜單控制標題
                //            OnGUI_SceneMenu(sh, scenekey, namestr, active == Warp.SceneNative.ActiveOption.Active);

                //            var root = FakeUnity.Warp.SceneNative.Scene_GetRoot(sh);

                //            hadselect = OnGUI_NodeTree(root, scenekey);

                //            ImGui.TreePop();
                //        }
                //        else
                //        {
                //            //處於關閉狀態，這裏展示菜單
                //            OnGUI_SceneMenu(sh, scenekey, namestr, active == Warp.SceneNative.ActiveOption.Active);
                //        }
                //        if (!hadselect && ImGui.IsItemClicked())//馬後炮真方便
                //        {
                //            selectkey = scenekey;
                //        }




                //    }
                ImGui.TreePop();
            }
            //每個場景的camera 是否要獨立？不需要，使用culling mask來控制？
            if (ImGui.TreeNode("Cameras"))
            {
                ImGui.TreePop();
            }

        }

        public void Show()
        {
        }
    }
}
